﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio;
public partial class Administracion_frmArticuloEstructura : System.Web.UI.Page
{
    ArticuloComponente objeto;
    EstadoABM estadoABM;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SetModo(EstadoABM.Seleccionar);
            CargarControles();
            CargarGrilla(ArticuloComponente.ObtenerTodos());
        }
        else
        {
            if (Session["ArticuloComponente"] != null)
            {
                objeto = (ArticuloComponente)Session["ArticuloComponente"];
            }
        }
    }
    protected void butNuevo_Click(object sender, EventArgs e)
    {
        Limpiar();
        objeto = new ArticuloComponente();
        SetModo(EstadoABM.Modificar);
        DropArticulo.Focus();
        Session["ArticuloComponente"] = objeto;
    }
    protected void butModificar_Click(object sender, EventArgs e)
    {
        SetModo(EstadoABM.Modificar);
        //DropArticulo.Enabled() = false;
        DropComponente.Focus();
    }
    protected void butEliminar_Click(object sender, EventArgs e)
    {
        objeto.Borrar();
        objeto.Persistir();
        objeto = null;
        Limpiar();
        SetModo(EstadoABM.Seleccionar);
        CargarGrilla(ArticuloComponente.ObtenerTodos());
    }
    protected void butAceptar_Click(object sender, EventArgs e)
    {
        CopiarDatos();
        objeto.Persistir();
        CargarObjetoConModoVer();
        CargarGrilla(ArticuloComponente.ObtenerTodos());
    }
    protected void butCancelar_Click(object sender, EventArgs e)
    {
        if (objeto.Nuevo)
        {
            Limpiar();
            SetModo(EstadoABM.Seleccionar);
        }
        else
        {
            CargarObjetoConModoVer();
        }
    }

    #region Funciones Protected

    protected void Limpiar()
    {
        DropArticulo.SelectedIndex = -1;
        DropComponente.SelectedIndex = -1;
        txtCantidad.Text = string.Empty;        
    }

    protected void CargarObjetoConModoVer()
    {
        DropArticulo.SelectedIndex = -1;
        DropComponente.SelectedIndex = -1;
        SetModo(EstadoABM.Ver);
    }

    protected void CopiarDatos()
    {
        //objeto.Codigo = txtCodigo.Text;
        //objeto.Apellido =txtApellido.Text;
        //objeto.Nombre = txtNombre.Text;
        //objeto.Telefono = txtTelefono.Text;
        //objeto.Email = txtEmail.Text;
        //objeto.Direccion = txtDireccion.Text;
        //objeto.Barrio = txtBarrio.Text;
        //objeto.Localidad = txtLocalidad.Text;
        //objeto.Provincia = txtProvincia.Text;
        //objeto.Cuit = txtCuit.Text;
        //objeto.IngresoBruto = txtIngresoBruto.Text;
        //objeto.CondicionIva = txtCondicionIva.Text;
        //objeto.Activo = chkActivo.Checked;
        //objeto.Observacion = txtObservacion.Text;
    }


    protected void HabilitarControles(bool enable)
    {
        DropArticulo.Enabled = enable;
        DropComponente.Enabled = enable;
        txtCantidad.Enabled = enable;        
    }


    protected void CargarControles()
    {
        Delivery hdMaster = (Delivery)this.Master;
        ((Label)hdMaster.FindControl("lblTitulo")).Text = this.Title;
    }

    protected void CargarGrilla(List<ArticuloComponente> ArticuloComponente)
    {
        grvDatos.DataSource = ArticuloComponente;
        string[] keys = { "Articulo", "Componente" };
        grvDatos.DataKeyNames = keys;
        grvDatos.DataBind();
    }

    protected void SetModo(EstadoABM estado)
    {
        estadoABM = estado;
        switch (estado)
        {
            case EstadoABM.Seleccionar:
                //Habilitar solo Nuevo
                butAceptar.Enabled = false;
                butCancelar.Enabled = false;
                butNuevo.Enabled = true;
                butModificar.Enabled = false;
                butEliminar.Enabled = false;
                HabilitarControles(false);
                break;

            case EstadoABM.Ver:
                //Habilitar solo Nuevo, Modificar y Eliminar
                butAceptar.Enabled = false;
                butCancelar.Enabled = false;
                butNuevo.Enabled = true;
                butModificar.Enabled = true;
                butEliminar.Enabled = true;
                HabilitarControles(false);
                break;

            case EstadoABM.Modificar:
                //Habilitar solo Aceptar y Cancelar
                butAceptar.Enabled = true;
                butCancelar.Enabled = true;
                butNuevo.Enabled = false;
                butModificar.Enabled = false;
                butEliminar.Enabled = false;
                HabilitarControles(true);
                break;
            default:
                break;
        }
    }
    protected enum EstadoABM
    {
        Ver,
        Modificar,
        Seleccionar
    }
    #endregion
    protected void grvDatos_SelectedIndexChanged(object sender, EventArgs e)
    {
        objeto = ArticuloComponente.ObtenerPorCodigo(grvDatos.SelectedDataKey[0].ToString(), grvDatos.SelectedDataKey[1].ToString());
        CargarObjetoConModoVer();
        Session["ArticuloComponente"] = objeto;
    }
    protected void grvDatos_PageIndexChanged(object sender, EventArgs e)
    {

    }
    protected void butBuscar_Click(object sender, EventArgs e)
    {
        if (txtFiltroApellido.Text != string.Empty)
        {
            //CargarGrilla(ArticuloComponente.ObtenerPorFiltro(txtFiltroApellido.Text,null,null));
        }
        else
        {
            CargarGrilla(ArticuloComponente.ObtenerTodos());
        }
    }
   
}
